## Задача 1

С помощью множественного наследования удобно описывать принадлежность объектов к нескольким разным группам. Выполним такой пример.


Определите в программе классы в соответствии с их иерархией, представленной на рисунке выше:

> Digit, Integer, Float, Positive, Negative

Каждый объект этих классов должен создаваться однотипной командой вида:
```python
obj = Имя_класса(value)
```
где 

`value` - числовое значение. 

В каждом классе следует делать свою проверку на корректность значения value:

* в классе `Digit`: value - любое число;
* в классе `Integer`: value - целое число;
* в классе `Float`: value - вещественное число;
* в классе `Positive`: value - положительное число;
* в классе `Negative`: value - отрицательное число.

Если проверка не проходит, то генерируется исключение командой:

```python
raise TypeError('значение не соответствует типу объекта')
```
После этого объявите следующие дочерние классы:


* PrimeNumber - простые числа; наследуется от классов `Integer` и `Positive`;
* FloatPositive - наследуется от классов `Float` и `Positive`.

Создайте три объекта класса `PrimeNumber` и пять объектов класса `FloatPositive` с произвольными допустимыми для них значениями.

Сохраните все эти объекты в виде списка `digits`.

Затем, используя функции `isinstance()` и `filter()`, сформируйте следующие списки из указанных объектов:

* lst_positive - все объекты, относящиеся к классу `Positive`;
* lst_float - все объекты, относящиеся к классу `Float`.